// pages/message/message.ts
import { getConversationList } from '../../utils/http/httpChat';
import { formatSmartTime } from '../../utils/DateTimeutil';

// 定义消息列表项的接口
interface MessageItem {
  id: number;
  workerId: number;
  name: string;
  avatar: string;
  lastMessage: string;
  time: string;
  unreadCount: number;
}

Page({

  /**
   * 页面的初始数据
   */
  data: {
    messageList: [] as MessageItem[],
    isLoggedIn: false,
    isLoading: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {
    this.checkLoginStatus();
  },

  /**
   * 检查登录状态
   */
  checkLoginStatus() {
    const token = wx.getStorageSync('token');
    const isLoggedIn = !!token;
    
    this.setData({
      isLoggedIn
    });

    if (isLoggedIn) {
      this.loadMessageData();
    }
  },

  /**
   * 格式化最后一条消息
   */
  formatLastMessage(lastMessage: any): string {
    if (!lastMessage || !lastMessage.content) {
      return '暂无消息';
    }
    
    switch (lastMessage.messageType) {
      case 1:
        return lastMessage.content;
      case 2:
        return '【图片】';
      case 3:
        return '【语音】';
      default:
        return lastMessage.content || '暂无消息';
    }
  },

  /**
   * 加载真实的消息数据
   */
  async loadMessageData() {
    try {
      this.setData({
        isLoading: true
      });

      wx.showLoading({
        title: '加载中...'
      });

      const response = await getConversationList({
        pageNum: 1,
        pageSize: 20,
        roleType: 'common'
      });

      if (response.code === 200 && response.rows) {
        const messageList = response.rows.map(conversation => ({
          id: conversation.conversationId,
          workerId: conversation.workerId,
          name: conversation.workerName,
          avatar: conversation.workerAvatar || '/images/worker.png',
          lastMessage: this.formatLastMessage(conversation.lastMessage),
          time: formatSmartTime(conversation.updateTime, 'list'),
          unreadCount: conversation.userUnreadCount
        }));

        this.setData({
          messageList
        });
      } else {
        console.error('获取会话列表失败:', response.msg);
        wx.showToast({
          title: response.msg || '获取消息失败',
          icon: 'none'
        });
      }
    } catch (error) {
      console.error('加载消息数据失败:', error);
      wx.showToast({
        title: '网络错误，请重试',
        icon: 'none'
      });
    } finally {
      this.setData({
        isLoading: false
      });
      wx.hideLoading();
    }
  },

  /**
   * 点击消息项的处理函数
   */
  onMessageTap(e: WechatMiniprogram.TouchEvent) {
    const id = e.currentTarget.dataset.id;
    const messageList = this.data.messageList;
    
    // 找到点击的消息项
    const message = messageList.find(item => item.id === id);
    
    if (message) {
      // 清除未读消息数
      message.unreadCount = 0;
      
      // 更新数据
      this.setData({
        messageList
      });
      
      // 跳转到聊天详情页
      wx.navigateTo({
        url: `/pages/chat/chat?id=${message.id}&workerId=${message.workerId}&workerName=${message.name}`,
        success: () => {
          console.log('跳转到聊天页面成功');
        },
        fail: (error) => {
          console.error('跳转到聊天页面失败', error);
          wx.showToast({
            title: '跳转失败，请重试',
            icon: 'none'
          });
        }
      });
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 设置导航栏标题
    wx.setNavigationBarTitle({
      title: '消息'
    });
    
    // 每次显示页面时检查登录状态
    this.checkLoginStatus();
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    // 检查登录状态并刷新消息列表
    this.checkLoginStatus();
    wx.stopPullDownRefresh();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    // 可以在这里添加加载更多历史消息的逻辑
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: '我的消息',
      path: '/pages/message/message'
    };
  }
})